﻿using System;
using System.Collections.Generic;
using System.Threading;
using System.Linq;
using System.Text;
using Microsoft.ServiceHosting.ServiceRuntime;

namespace CarnetAnniversaires_WorkerRole
{
    // [PENDING] A placer dans la logique Metier
    public class Alerte
    {
    }


    public class WorkerRole : RoleEntryPoint
    {
        public override void Start()
        {
            // This is a sample worker implementation. Replace with your logic.
            RoleManager.WriteToLog("Information", "Worker Process entry point called");

            while (true)
            {
                // Dormir 1 minute
                Thread.Sleep(600000);

                // Vérifier si la date de tests des échéances est arrivée, c'est le moment de vérifier s'il y a de nouvelles alertes
                RoleManager.WriteToLog("Information", "Vérifie si à échéance");
                if (EstAEcheance()) // Toutes les 24h
                {
                    // Vérifier si des anniversaires sont à échéance
                    RoleManager.WriteToLog("Information", "On est à échéance");
                    VerifierAnniversaires();
                    RoleManager.WriteToLog("Information", "Anniversaires vérifiés");
                }

                

                // Traiter les messages de demande d'alerte
                while (true) {
                    RoleManager.WriteToLog("Information", "Pop Alerte");
                    Alerte alerte = PopAlerte();

                    // Il n'y a plus d'alertes
                    if (alerte == null) {
                        break;
                    }

                    RoleManager.WriteToLog("Information", "Nouvelle Alerte");
                    TraiterAlerte(alerte);
                }
                
                RoleManager.WriteToLog("Information", "Working");
                
            }
        }

        private void TraiterAlerte(Alerte alerte)
        {
            throw new NotImplementedException();
        }

        private Alerte PopAlerte()
        {
            throw new NotImplementedException();
        }

        private void VerifierAnniversaires()
        {
            throw new NotImplementedException();
        }

        private bool EstAEcheance()
        {
            throw new NotImplementedException();
        }

        public override RoleStatus GetHealthStatus()
        {
            // This is a sample worker implementation. Replace with your logic.
            return RoleStatus.Healthy;
        }
    }
}
